"""
计数器：以日期作为key,排号作为value
队列，日期作为队列的key,排号作为列表中额元素

1、对计数器加一
2、从计数器中获取当前排号，
3、获取计数器中的排号，增加到队列中

"""
import redis
import time

if __name__ == '__main__':

    # 1、创建redis的连接
    con = redis.Redis(host="master", port=6379, decode_responses=True, encoding="UTF-8")

    print("==============银行取号系统====================")

    print("输入1取号")

    num = input("请取号：")

    if num == "1":

        # 构建计数器的key
        localtime = time.localtime()
        year = localtime.tm_year
        mon = localtime.tm_mon
        day = localtime.tm_mday
        # 获取当前日期
        date = f"{year}{mon}{day}"

        # 计数器的key
        incr_key = f"incr:{date}"

        # 排号加1
        con.incr(incr_key, 1)

        # 取出号码
        haoma = con.get(incr_key)

        # 将取到的号码保存到队列中
        # 构建排号的key
        paidui_key = f"paidui:{date}"

        # 计算前面还有多少个人
        num = con.llen(paidui_key)

        # 将当前号码放到队列中
        con.lpush(paidui_key, haoma)

        print(f"当前排队的号码时：{haoma}")
        print(f"前面排队的人数：{num}")

    else:
        print("输入有误")

    # 关闭连接
    con.close()